package com.briup.myblog.exception;

import com.briup.myblog.utils.Result;
import com.briup.myblog.utils.ResultUtil;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.sql.SQLException;

/**
 * 异常的统一处理
 */
@RestControllerAdvice
public class GlobalExceptionhandler {
    //定义一个方法处理程序中所有的异常信息
    @ExceptionHandler(Exception.class)
    public Result handlerExcetion(Exception e){
        e.printStackTrace();
        //2.根据不同的异常类型，返回不同的提示信息
        if(e instanceof CustomerException){
            // return ResultUtil.error(e.getMessage());
            //当开发者直接使用字符串抛出异常
            if(((CustomerException) e).getResult() == null){
                return ResultUtil.error(e.getMessage());
            }
            //当用户直接使用枚举对象抛出异常
            return  ResultUtil.error(((CustomerException) e).getResult());

        }
        if(e instanceof SQLException){
            return ResultUtil.error("连接数据库异常");
        }
        return ResultUtil.error("程序内部错误，请重试！");
    }
}
